<?

/*
*
*   Excalibur Content Management System
*   Copyright © 2008 Egor "Sontan" Kuryanovich
*
*   Based on Explay Engine v2.0 by Golovdinov Alexander
*
*   Official site: www.excms.ru
*   Contact e-mail: support@excms.ru
*
*   GNU General Public License original source:
*   http://www.gnu.org/licenses/gpl-3.0.html
*
*/

if ($EXCMS != 'work') 
{
	header ('Location: ../../index.php');
	exit;
}

$number = 30;
$start = 0;
if (isset($_GET['id'])) $id = intval ($_GET['id']);
if (isset($_GET['page']) && $_GET['page'] != "0") $start = (intval ($_GET['page']) - 1) * $number;

if (isset($_GET['delete'])) 
{
	$delete = $db->query ("DELETE FROM ".DB_PEREFIX."_messages WHERE mes_id = '".intval($_GET['delete'])."' AND mes_user = '".$GLOBAL_USER['user_id']."'");
	if ($delete) site_message ("Сообщение удалено!");
	else site_errror ("Ошибка БД или нет такой записи!");
}
 
if (isset($_GET['id'])) 
{
	$get_mes = $db->query ("SELECT * FROM ".DB_PEREFIX."_messages WHERE mes_id = '$id'");
	if ($db->num_rows ($get_mes) == 1) 
	{
		$db->query ("UPDATE ".DB_PEREFIX."_messages SET mes_read = 'old' WHERE mes_id = '$id'");
		while (list($id, $user, $from, $header, $body, $date, $read) = $db->fetch_row($get_mes)) 
		{
			$author = $db->fetch_array ($db->query ("SELECT user_name FROM ".DB_PEREFIX."_users WHERE user_id = '$from'"));
			$from_ = '<a href="/users/'.$from.'.html">'.$author['user_name'].'</a>';

			if (isset_friend($from)) 
				$option = ' | <a href="/messages/write/?to='.$from.'&subject='.urlencode($header).'">Ответить</a>';
			else 
				$option = '<p style="color:red;">Этот пользователь не находится в списке ваших друзей! Вы можете <a href="/users/'
							.$from.'.html">добавить этого пользователя</a> в список ваших друзей, чтобы ответить на сообщение.</p>';
			

			$body = n2br(replace_symbols ($body)).'<p />Отправитель: '.$from_.'<br>Дата: <b>'.format_time($date).
					'</b><p /><a href="/messages/?delete='.$id.'">Удалить</a>'.$option;

			past_table ($header, $body);
		}
	}
	else site_errror ("Ошибка БД или нет такой записи!");
	come_back ("персональным сообшениям", "/messages/");
}

if ($_GET['cat'] == "write") 
{
	if (isset($_POST['submit'])) 
	{
		$user = intval ($_POST['user']);
		$header = strip_tags ($_POST['header']);
		$body = strip_tags(htmlspecialchars($_POST['body'], ENT_QUOTES));
		$body = htmlspecialchars($body);
		$body = replace_symbols ($body);
		$code = $_POST['code'];
		$error = '';

		if (!isset_friend($user)) 
			$error .= '<li>Этого пользователя нет в списках ваших друзей!';

		if ($header == '') 
			$header = '&lt;без темы&gt;';

		if ($body == '') 
			$error .= '<li>Не заполнено поле текста сообщения!';

		if ($error == '') 
		{
			$send = $db->query ("INSERT INTO ".DB_PEREFIX."_messages 
					VALUES (0, '$user', '".$GLOBAL_USER['user_id']."', '$header', '$body', '".time()."', 'new')");

			if ($send) 
			{
				site_message ('Сообщение было отправлено!');
				$user = $db->fetch_array ($db->query ("SELECT user_name, user_email FROM ".DB_PEREFIX."_users WHERE user_id = '$user'"));
				
				$template->set_var ('{NAME}', $user['user_name']);
				$template->set_var ('{SITE}', $SITE['site_name']);
				$template->set_var ('{FROM}', $GLOBAL_USER['user_name']);				
				$template->set_var ('{URL}', 'http://'.$_SERVER['HTTP_HOST'].'/messages/');
				
				
				send_mail ($user['user_email'], 
							$SITE['site_name'].': Новое сообщение от '.$GLOBAL_USER['user_name'], 
							n2br($template->display ('mail/message.tpl')));
			}
			else 
				site_error ("Ошибка при отправлении сообщения!");
		}
		else 
			site_error ($error);
	}

	if (isset($_GET['to'])) 
		$user_name = htmlspecialchars ($_GET['to'], ENT_QUOTES);
	else 
		$user_name = htmlspecialchars ($_POST['user'], ENT_QUOTES);

	if (isset($_GET['subject'])) 
		$title = 'Re: '.htmlspecialchars ($_GET['subject'], ENT_QUOTES);
	else 
		$title = htmlspecialchars ($_POST['header'], ENT_QUOTES);
	
	$PAGE_TITLE = 'Написать сообщение';
	
	write_message ($user_name, $title);
	come_back ('персональным сообшениям', '/messages/');
}

elseif (!isset($_GET['id'])) 
{
	simple_table ('<a href="/messages/write/">Написать персональное сообщение пользователю</a>');
	
	$read = $db->query("SELECT * FROM ".DB_PEREFIX."_messages WHERE mes_user = '".$GLOBAL_USER['user_id']."' ORDER BY mes_id DESC LIMIT $start, $number");
	
	// FIXME: исправить на count
	$total = $db->num_rows ($db->query ("SELECT * FROM ".DB_PEREFIX."_messages WHERE mes_user = '".$GLOBAL_USER['user_id']."'"));
	$new = $db->num_rows ($db->query ("SELECT mes_id FROM ".DB_PEREFIX."_messages WHERE mes_user = '".$GLOBAL_USER['user_id']."' && mes_read = 'new'"));
	$sender = $db->num_rows ($db->query ("SELECT mes_id FROM ".DB_PEREFIX."_messages WHERE mes_author = '".$GLOBAL_USER['user_id']."'"));
	
	$statist = 'Всего сообщеий: '.$total.' | Новых: '.$new.' | Отправленных: '.$sender;
	past_table ('Статистика', $statist);
	if ($db->num_rows ($read) > 0) 
	{
		$mestr = '';
		while (list($id, $user, $from, $header, $body, $date, $readed) = $db->fetch_row($read)) 
		{
			if ($readed == "new") $header_ = "<b>$header</b>";
			if ($readed == "old") $header_ = $header;
		
			$author = $db->fetch_array ($db->query ("SELECT user_name FROM ".DB_PEREFIX."_users WHERE user_id = '$from'"));
			$from_ = '<a href="/users/'.$from.'.html">'.$author['user_name'].'</a>';
			$option = '';

			if (isset_friend($from)) 
				$option = '<a href="/messages/write/?to='.$from.'&subject='.urlencode($header).'">Ответить</a> |';
			
			$mestr .= '<tr><colgroup class="ad_tr">
				<td><a href="/messages/'.$id.'.html">'.$header_.'</a></td>
				<td><center>'.$from_.'</td><td><center>'.format_time($date).'</td>
				<td><center>'.$option.'<a href=\'javascript:delete_("/messages/?delete='.$id.'");\'>Удалить</a></td>
				</colgroup></tr>';
		}
		
		$mes_table = '<table width="100%" cellspacing="0" cellpadding="2">
				<tr>
					<th>Заголовок</th><th>Автор</th><th>Дата</th><th>Опции</th>
				</tr>'.$mestr.
				'</table> 
				<script>
					function delete_ (url_) 
					{
						if (window.confirm(\'Вы действительно хотите удалить сообщение?\') == true) document.location.href = url_;
					}
				</script>';

		past_table ('Персональные сообщения', $mes_table);
		if ($total > $number) print past_pages($start, $number, $total, '/messages/');
	}
	else 
		site_error ('Нет входящих сообщений!');
}



function write_message ($user, $title) 
{
	global $SITE, $GLOBAL_USER;
		
	$form = '<form name="record" action="" method="post">
			<table width="100%" cellspacing="0" cellpadding="4">
				<tr>
					<td align="right" width="10%" valign="top">Получатель:</td>
					<td style="padding-left:8px">
						<select name="user">'.print_friends($GLOBAL_USER['user_id']).'</select><br />
						<span class="help">Вы можете отправлять сообщения только своим друзьям.</span>
					</td>
				</tr>
				<tr>
					<td align="right">Заголовок:</td>
					<td style="padding-left:8px">
						<input type="text" class="form" style="width:50%" maxlength="50" name="header" value="'.$title.'" />
					</td>
				</tr>
				<tr>
					<td colspan="2"><p />
						<textarea name="body" style="width:100%" class="form" rows="10">'.
						replace_symbols (htmlspecialchars ($_POST['body'], ENT_QUOTES)).
						'</textarea>
					</td>
				</tr>
				<tr>
					<td colspan="2">
						<input type="submit" value="Отправить" name="submit" class="button" style="width:200px">
					</td>
				</tr>
			</table>';
			
	past_table ('Персональное сообщение пользователю', $form);
}

function print_friends ($id) 
{
	global $GLOBAL_USER, $db;

	$my_friends = $db->fetch_array ($db->query ("SELECT user_friends FROM ".DB_PEREFIX."_users WHERE user_id = '$id'"));
	$friends = $my_friends['user_friends'];
	$friends = explode (",", $friends);

	$string = '';
	foreach ($friends as $friend) 
	{
		if ($friend != '') 
		{
			$get_name = $db->fetch_array ($db->query ("SELECT user_name FROM ".DB_PEREFIX."_users WHERE user_id = '$friend'"));

			if ($_GET['to'] == $friend) 
				$string .= '<option value="'.$friend.'" selected>'.$get_name['user_name'].'</option>';
			else 
				$string .= '<option value="'.$friend.'">'.$get_name['user_name'].'</option>';
		}
	}
	return $string;
}

function isset_friend ($id) 
{
	global $GLOBAL_USER, $db;

	$my_friends = $db->fetch_array ($db->query ("SELECT user_friends FROM ".DB_PEREFIX."_users WHERE user_id = '{$GLOBAL_USER['user_id']}'"));

	$friends = $my_friends['user_friends'];
	$friends = explode (",", $friends);
	foreach ($friends as $friend) if ($friend == $id) return true;

	return false;
}
